package com.neusoft.dibuy.lib;

import java.sql.Connection;

public class MyObject {
    public  double PI = 3.14;

    String  s ;
    Math  m ;
    Connection  connection ;

    public MyObject(){
        System.out.println("MyObject.MyObject");

    }

    public static void main(String[] args) throws Throwable {
        MyObject ob2  =   new  MyObject2();
        System.out.println(ob2.PI);
//       Exception  e ;
//        MyObject ob  =   new  MyObject();
//        new  MyObject();
//        new  MyObject();
//        new  MyObject();
//        new  MyObject();
//        System.gc();
//        new Scanner(System.in);
//        System.out.println("MyObject.main");
    }

    /**
     * TODO :垃圾回收器在清理垃圾时，自动调用每个对象的finalize 一次
     * @throws Throwable
     */
    @Override
    protected void finalize() throws Throwable {

        if (connection!=null && !connection.isClosed()){
            connection.close();
        }

        super.finalize();
        System.out.println("MyObject.finalize");
    }
//    final , finally ,finalize
//    final class :保证某个类的所有的对象的相同方法的执行结果都是相同的
//    final  属性 :保证某个属性的值是固定的，不能被修改
//                1、定义时 ,除此之外只能是构造器
//    final 方法 ： 1、不允许子类被覆盖的方法 ， 如果一个类所有的方法都是fianl的 ，那么此类应该是final的
//    final 形参 ：  形参在方法体内不允许被修改
//    final 局部变量:  在方法体内声明一个只读变量
}
class  MyObject2 extends  MyObject{
   public    double PI = 3;
}
class  MyJDbc{
    final   String url  ;

    MyJDbc(String url) {
        this.url = url;
    }
    public  void a( final int i){
//        i =102;
        final int j = 102;

    }
}